package com.ruoyi.ldzlsc.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 工序任务详情VO
 * 
 * @author ldzl
 */
@Data
public class WorkOrderTaskDetailVO {
    
    /** 工序任务基础信息 */
    private TaskInfo taskInfo;
    
    /** 工单信息 */
    private WorkOrderInfo workOrderInfo;
    
    /** 派工信息 */
    private DispatchInfo dispatchInfo;
    
    /** 质检信息 */
    private QcInfo qcInfo;
    
    /**
     * 工序任务基础信息
     */
    @Data
    public static class TaskInfo {
        /** 工序任务ID */
        private Long workOrderTaskId;
        
        /** 任务编号 */
        private String taskCode;
        
        /** 任务名称 */
        private String taskName;
        
        /** 工序ID */
        private Long processId;
        
        /** 工序编号 */
        private String processCode;
        
        /** 工序名称 */
        private String processName;
        
        /** 工位ID */
        private Long stationId;
        
        /** 工位名称 */
        private String stationName;
        
        /** 车间ID */
        private Long workshopId;
        
        /** 车间名称 */
        private String workshopName;
        
        /** 工艺路线名称 */
        private String operationalName;
        
        /** 计划数量 */
        private BigDecimal plannedQty;
        
        /** 实际生产数量 */
        private BigDecimal actualQty;
        
        /** 已完成数量 */
        private BigDecimal completedQty;
        
        /** 合格数量 */
        private BigDecimal qualifiedQty;
        
        /** 不合格数量 */
        private BigDecimal unqualifiedQty;
        
        /** 计划开工时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date planStartTime;
        
        /** 计划完工时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date planEndTime;
        
        /** 实际开工时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date actualStartTime;
        
        /** 实际完工时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date actualEndTime;
        
        /** 任务状态 */
        private String status;
        
        /** 状态名称 */
        private String statusName;
        
        /** 颜色标识 */
        private String color;
        
        /** 备注 */
        private String remark;
        
        /** 创建人 */
        private String createBy;
        
        /** 创建时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date createTime;
        
        /** 更新人 */
        private String updateBy;
        
        /** 更新时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date updateTime;
    }
    
    /**
     * 工单信息
     */
    @Data
    public static class WorkOrderInfo {
        /** 工单ID */
        private Long workOrderId;
        
        /** 工单编号 */
        private String workOrderCode;
        
        /** 工单名称 */
        private String workOrderName;
        
        /** 产品ID */
        private Long productId;
        
        /** 产品编号 */
        private String productCode;
        
        /** 产品名称 */
        private String productName;
        
        /** 产品型号 */
        private String productModel;
        
        /** 规格型号 */
        private String specification;
        
        /** 单位 */
        private String unit;
        
        /** BOM编号 */
        private String bomCode;
        
        /** BOM名称 */
        private String bomName;
        
        /** 工单状态 */
        private String workOrderStatus;
        
        /** 工单状态名称 */
        private String workOrderStatusName;
    }
    
    /**
     * 派工信息
     */
    @Data
    public static class DispatchInfo {
        /** 派工ID */
        private Long dispatchId;
        
        /** 派工人员 */
        private String dispatcher;
        
        /** 派工时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date dispatchTime;
        
        /** 班组ID */
        private Long teamId;

        /** 班组名称 */
        private String teamName;

        /** 负责人ID */
        private Long leaderId;

        /** 任务负责人 */
        private String supervisor;

        /** 成员ID列表 */
        private String memberIds;

        /** 其他成员 */
        private String members;
        
        /** 成员数量 */
        private Integer memberCount;

        /** 质检部门ID */
        private Long qcDeptId;

        /** 质检人员ID */
        private Long qcPersonId;

        /** 派工备注 */
        private String dispatchRemark;
    }
    
    /**
     * 质检信息
     */
    @Data
    public static class QcInfo {
        /** 质检部门 */
        private String qcDepartment;
        
        /** 质检人员 */
        private String qcInspector;
        
        /** 质检备注 */
        private String qcRemark;
    }
}
